#!/usr/bin/env python3
# -*- coding: utf-8 -*-

''

with open('withTest.py') as f:
    pass

'''
不仅仅只有open()函数返回fp对象才能使用with语句。
实际上，任何对象，只要正确实现了上下文管理，就
可以用于with语句。
'''


# 实现上下文管理是通过__enter__和__exit__这两个方法实现的。
class Query(object):
    def __init__(self, name):
        self.name = name

    def __enter__(self):
        print('Begin')
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        if exc_type:
            print('Error')
        else:
            print('End')

    def query(self):
        print('Query info about %s...' % self.name)


with Query('MaoMao') as m:
    m.query()
